package cn.hncu.booksManagementSystem.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import cn.hncu.booksManagementSystem.common.enums.XxxIdEnum;
/**
 * Description:
 *	生产各个模块id的工具类
 */
public class GeneratorXxxID_Util {
	//配置文件的存放路径
	private static final String CONFIG_NAME = "./data/xxxID.config";
	
	private static Properties p = new Properties();
	static {
		File file = new File(CONFIG_NAME);
		if (!file.exists()) {
			file.getParentFile().mkdirs();
			try {
				file.createNewFile();
			} catch (IOException e) {
				throw new RuntimeException("软件出问题了!!!");
			}
		}
		try {
			p.load(new FileInputStream(file));
		} catch (IOException e) {
			throw new RuntimeException("软件出问题了!!!");
		}
	}
	private GeneratorXxxID_Util() {
	}
//   把下面代码抽取出公共代码
//	/**
//	 * 获得一个用户id（唯一）
//	 * @return 用户id
//	 */
//	public static String getUserId() {
//		return p.getProperty("userId","1");
//	}
//	/**
//	 * 产生下一个用户id（唯一）
//	 */
//	public static void updateUserId() {
//		String strId = p.getProperty("userId","1");
//		int id = Integer.parseInt(strId);
//		id++;
//		p.setProperty("userId", id+"");
//		try {
//			p.store(new FileOutputStream(CONFIG_NAME), null);
//		} catch (IOException e) {
//			throw new RuntimeException("软件出问题了!!!");
//		}
//	}
	/**
	 * 通过枚举XxxIdEnum去获得所对应Xxx的id
	 * @param ie XxxIdEnum的一个枚举实例
	 * @return Xxx的id
	 */
	public static String getXxxId(XxxIdEnum ie) {
		return p.getProperty(ie.getName(),"1");
	}
	/**
	 * 通过枚举XxxIdEnum去更新所对应Xxx的id
	 * @param ie XxxIdEnum的一个枚举实例
	 */
	public static void updateXxxId(XxxIdEnum ie) {
		String strId = p.getProperty(ie.getName(),"1");
		int id = Integer.parseInt(strId);
		id++;
		p.setProperty(ie.getName(), id+"");
		try {
			p.store(new FileOutputStream(CONFIG_NAME), null);
		} catch (IOException e) {
			throw new RuntimeException("软件出问题了!!!");
		}
	}
	
}
